#include "../header.h"

//信号量单独测试
int main(int argc, char const *argv[])
{
    //1.申请一个信号量
    sem_t sem;
    //2.初始化信号量
    sem_init(&sem,0,1);
    //获取信号量的初始数值
    int value = 0 ; 
    sem_getvalue(&sem,&value);
    printf("信号量初始化数值是:%d\n",value);

    //3.P操作  wait:阻塞版本的P操作  try_wait ：非阻塞版本  while 
    if(sem_wait(&sem))
    {
        perror("sem_wait error\n");
        return -1;
    }
    //再次获取信号量的数值？
    sem_getvalue(&sem,&value);
    printf("P操作以后,信号量的数值是:%d\n",value);

    //4.公共数据
    printf("do operation to file data\n");
    //5.v操作
    if(sem_post(&sem))
    {
        perror("sem_post error\n");
        return -1;
    }
    sem_getvalue(&sem,&value);
    printf("V操作以后,信号量的数值是:%d\n",value);
    //6.销毁信号量
    sem_destroy(&sem);

    return 0;
}
